import java.awt.*;
import java.awt.image.*;
import java.awt.geom.*;
import com.sun.image.codec.jpeg.*;
import java.io.*;


/**
* Beispiel zum Speichern eines Bildes
*
* @author Frank Klawonn
* Letzte Aenderung 27.05.2005
*/

public class ImageSavingExample extends Frame
{

  //Hierauf wird das zu speichernde Bild gezeichnet
  private BufferedImage theImage;

  /**
  * Konstruktor
  */
  public ImageSavingExample()
  {
    //Ermoeglicht das Schliessen des Fensters
    addWindowListener(new MyFinishWindow());

    //Initialisiere das BufferedImage
    theImage = new BufferedImage(200,300,BufferedImage.TYPE_INT_RGB);

    //Erzeuge das zugehoerige Graphics2D-Objekt.
    Graphics2D g2dImage = theImage.createGraphics();

    //Das gewuenschte Bild wird gezeichnet.
    clearWindow(g2dImage);
    g2dImage.setPaint(Color.blue);
    g2dImage.draw(new Rectangle2D.Double(10,10,150,250));
    g2dImage.setPaint(Color.red);
    g2dImage.drawString("Ein Test",30,230);


    try
    {
      //Erzeugung eines file output streams.
      FileOutputStream fos = new FileOutputStream("test.jpg");
      //Erzeugung eines JPEGImageEncoder, der den file output stream verwendet.
      JPEGImageEncoder jie = JPEGCodec.createJPEGEncoder(fos);
      //Der JPEGImageEncoder schreibt das Bild auf den file output stream.
      jie.encode(theImage);
    }
    catch (Exception e)
    {
      System.out.println(e);
    }

  }



  //Hier wird das Bild noch einmal im Fenster zu Demonstrationszwecken
  //angezeigt. Zum Speichern des Bildes ist dies nicht erforderlich.
  public void paint(Graphics g)
  {

    Graphics2D g2d = (Graphics2D) g;

    g2d.drawImage(theImage,50,50,null);

  }



  public static void clearWindow(Graphics2D g)
  {
    g.setPaint(Color.white);
    g.fill(new Rectangle(0,0,600,600));
    g.setPaint(Color.black);
  }

  public static void main(String[] argv)
  {
    ImageSavingExample f = new ImageSavingExample();
    f.setTitle("Speichern eines Bildes");
    f.setSize(600,600);
    f.setVisible(true);
   }

}

